package it.pizzastorm.service;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

import it.pizzastorm.domain.PuntoDiRistoro;
import it.pizzastorm.domain.common.DefaultNamed;
import it.pizzastorm.domain.common.Named;
import it.pizzastorm.domain.common.Ordered;
import it.pizzastorm.domain.pietanze.SpecialitaRO;

/**
 * Rappresenta una specialita' che puo' essere ordinata dal cliente perche' c'e'
 * almeno un punto di ristoro che la commercializza.
 */
public class SpecialitaOrdinabileDTO implements SpecialitaRO, Serializable {

  private static final long serialVersionUID = 1072030970086006634L;
  private final int order;
  private final Named named;
  private final PuntoDiRistoroLimitrofoDTO[] puntiDiRistoro;

  public SpecialitaOrdinabileDTO(SpecialitaRO specialita, PuntoDiRistoroLimitrofoDTO[] puntiDiRistoro) {
    this.named = new DefaultNamed(specialita);
    this.order = specialita.getOrder();
    this.puntiDiRistoro = puntiDiRistoro;
  }

  /**
   * Restituisce l'id della specialita' che puo' essere ordinata.
   * 
   * @return la specialita' che puo' essere ordinata.
   */
  @Override
  public Integer getId() {
    return named.getId();
  }

  /**
   * Restituisce il nome della specialita' che puo' essere ordinata.
   * 
   * @return il nome della specialita' che puo' essere ordinata.
   */
  @Override
  public String getNome() {
    return named.getNome();
  }

  @Override
  public int getOrder() {
    return order;
  }

  /**
   * Restituisce la descrizione della specialita' che puo' essere ordinata.
   * 
   * @return la descrizione della specialita' che puo' essere ordinata.
   */
  @Override
  public String getDescrizione() {
    return named.getDescrizione();
  }

  public PuntoDiRistoroLimitrofoDTO[] elencaPuntiDiRistoroDaCuiOrdinarla() {
    return this.puntiDiRistoro;
  }
}
